# 给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
#
# 最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
#
# 你可以假设除了整数 0 之外，这个整数不会以零开头。
#
# 示例 1:
#
# 输入: [1,2,3]
# 输出: [1,2,4]
# 解释: 输入数组表示数字 123。
# 示例 2:
#
# 输入: [4,3,2,1]
# 输出: [4,3,2,2]
# 解释: 输入数组表示数字 4321。

# def plusOne(digits):
#     result = list()
#     flag = True
#     for i in range(len(digits)-1, -1, -1):
#         cur = digits[i]
#         if flag:
#             cur += 1
#             flag = False
#         if cur == 10:
#             cur = 0
#             flag = True
#         result.insert(0, cur)
#     if flag:
#         result.insert(0, 1)
#     return result
#
#
# result = plusOne([9,9,9])
# print(result)

# def plusOne(digits):
#     flag = True
#     for i in range(len(digits)-1, -1, -1):
#         if flag:
#             digits[i] += 1
#             flag = False
#         if digits[i] == 10:
#             digits[i] = 0
#             flag = True
#     if flag:
#         digits.insert(0, 1)
#     return digits
#
#
# result = plusOne([9,9,9])
# print(result)

# def plusOne(digits):
#     flag = True
#     i = len(digits) - 1
#
#     while i >= 0:
#         if flag:
#             digits[i] += 1
#             flag = False
#         if digits[i] == 10:
#             digits[i] = 0
#             flag = True
#         i -= 1
#     if flag:
#         digits.insert(0, 1)
#
#     return digits
#
#
# result = plusOne([9,9,9])
# print(result)

def plusOne(digits):
    for i in range(len(digits)):
        if digits[~i] < 9:
            digits[~i] += 1
            return digits
        digits[~i] = 0
    return [1] + [0] * len(digits)


result = plusOne([9,9,9])
print(result)

print(~3)

